Modified bicubic interpolation

ABSTRACT

Systems, methods, and other embodiments associated with image scaling are described. According to one embodiment, a method acquiring a set of amplitude values describing pixels in an image. Image scaling is performed on the image. A target pixel is identified from the set of pixels. A preceding pixel is identified to the target pixel. An amplitude range of amplitudes is defined between the amplitude of the preceding pixel and the target pixel. It is determined whether the interpolation between the preceding pixel and target pixel will result in an interpolated pixel having an interpolated amplitude outside of the amplitude range. Based on this determination, an interpolation slope is selected that reduces overshoot or undershoot in interpolation pixels generated between the target pixel and the preceding pixel.

CROSS REFERENCE TO RELATED APPLICATIONS

This patent disclosure claims the benefit of U.S. ProvisionalApplication No. 61/497,212 filed on Jun. 15, 2011, which is herebywholly incorporated by reference.

BACKGROUND

The background description provided herein is for the purpose ofgenerally presenting the context of the disclosure. Work of thepresently named inventor(s), to the extent the work is described in thisbackground section, as well as aspects of the description that may nototherwise qualify as prior art at the time of filing, are neitherexpressly nor impliedly admitted as prior art against the presentdisclosure.

In computer graphics, image scaling is the process of resizing apixelated digital image. Scaling up involves adding additional pixelsbetween the existing pixels to enlarge the image. However, two adjacentexisting pixels may have different characteristics. The characteristicsof the additional pixels should gradually vary to make the transitionbetween existing pixels appear continuous.

Scaling up an image using bilinear interpolation provides a smoothtransition in the image. However, bilinear interpolation makes edgeslook blurry. Moreover, to enlarge the digital image bilinearinterpolation generates a curve that does not have a continuousderivative, meaning the scaling has abrupt changes in slope. The abruptchanges in slope cause the digital image to appear disjointed.

Scaling up using bicubic interpolation has sharper transitions so thereis less blurring in a digital image than with bilinear interpolation.Bicubic interpolation generates a curve with a continuous derivative,but causes ‘sharpening-like’ overshoot and undershoot along the edges oftransitions in the digital image. Overshoot and undershoot causeinterpolated pixel color intensity to exceed the color intensity of theexisting pixels. Thus, overshoot and undershoot may make portions of thedigital image appear arbitrarily brighter or darker.

SUMMARY

In one embodiment a method includes acquiring a set of amplitude valuesdescribing pixels in an image. Image scaling is performed on the image.A target pixel is identified from the set of pixels. A preceding pixelis identified to the target pixel. An amplitude range is defined betweenthe amplitudes of the preceding pixel and the target pixel. It isdetermined whether the interpolation between the preceding pixel andtarget pixel will result in an interpolated pixel having an interpolatedamplitude outside of the amplitude range.

In one embodiment, when the interpolated amplitude is outside of theamplitude range, a set of interpolated pixels is generated between thepreceding pixel and the target pixel. A curve defining amplitudes of theset of interpolated pixels has an interpolation slope set tosubstantially zero at the target pixel.

In one embodiment an apparatus includes an acquisition logic configuredto acquire a set of amplitude values describing pixels in an image. Theapparatus also includes a scaling logic configured to perform imagescaling on the image. The scaling logic includes an overshoot logicconfigured to identify a target pixel and a preceding pixel. The scalinglogic is also configured to determine if interpolation between thepreceding pixel and target pixel will result in an interpolated pixelhaving an interpolated amplitude outside of an amplitude range betweenthe preceding pixel and the target pixel. The scaling logic alsoincludes a slope selection logic configured to select an interpolationslope for a curve that defines amplitudes of a set of interpolatedpixels. The scaling logic also includes a rendering logic configured torender the set of interpolated pixels between the preceding pixel andthe target pixel using the interpolation slope.

In one embodiment a method includes identifying a target pixel in animage to be scaled. The method further includes identifying a precedingpixel to the target pixel and identifying a following pixel to thetarget pixel. A first slope is determined between the preceding pixeland the target pixel. A second slope is determined between the targetpixel and the following pixel. An interpolation curve is defined havingthe interpolation slope. A set of interpolated pixels is generatedbetween the preceding pixel and the following pixel along theinterpolation curve.

BRIEF DESCRIPTION OF THE DRAWINGS

The accompanying drawings, which are incorporated in and constitute apart of the specification, illustrate various systems, methods, andother embodiments of the disclosure. It will be appreciated that theillustrated element boundaries (e.g., boxes, groups of boxes, or othershapes) in the figures represent one example of the boundaries. One ofordinary skill in the art will appreciate that in some examples oneelement may be designed as multiple elements or that multiple elementsmay be designed as one element. In some examples, an element shown as aninternal component of another element may be implemented as an externalcomponent and vice versa. Furthermore, elements may not be drawn toscale.

FIG. 1 illustrates one embodiment of an apparatus associated withinterpolation having reduced overshoot and undershoot.

FIG. 2 illustrates a linear curve compared to a cubic curve havingreduced overshoot and undershoot.

FIG. 3A illustrates a standard cubic curve compared to a modified cubicinterpolation curve having reduced overshoot and undershoot.

FIG. 3B illustrates a standard cubic curve compared to a modified cubicinterpolation curve having reduced overshoot and undershoot.

FIG. 4 illustrates a standard cubic curve compared to a modified cubicinterpolation curve having reduced overshoot and undershoot.

FIG. 5 illustrates one embodiment of a method associated withinterpolation having reduced overshoot and undershoot.

DETAILED DESCRIPTION

Described herein are examples of systems, methods, and other embodimentsassociated with scaling up digital images using modified bicubicinterpolation that provides the sharper image edges of bicubicinterpolation while reducing overshoot and undershoot usually associatedwith bicubic interpolation. Bicubic interpolation is accomplished byperforming cubic interpolation in two different dimensions. Forsimplicity, modified cubic interpolation techniques will be describedherein. When performed in two dimensions, the modified cubicinterpolation techniques will result in modified bicubic interpolation.Rather than automatically using a standard cubic slope, the modifiedcubic interpolation technique generates a modified cubic interpolationcurve with a modified interpolation slope selected to minimizeovershoot. Modified bicubic interpolation performs a gradual visualshift from one target pixel to an adjacent pixel.

With reference to FIG. 1, one embodiment of an apparatus 100 is shownthat is associated with image scaling. The apparatus 100 may beimplemented in a device for enlarging digital images. The apparatus 100includes an acquisition logic 110 and a scaling logic 120. Theacquisition logic 110 is configured to receive amplitude values thatdescribe pixels in the digital image. The amplitude values are used bythe scaling logic 120 to enlarge an image by adding interpolated pixelsbetween the existing pixels in the image. These additional interpolatedpixels have amplitudes fitted along a modified cubic interpolationcurve. The modified cubic interpolation curve reduces overshoot orundershoot.

Interpolated pixels are generated between a selected target pixel and apreceding pixel (e.g., an adjacent pixel that precedes the target pixelin the digital image.) Overshoot and undershoot occur when the amplitudeof an interpolated pixel falls outside the range between the amplitudesof the target pixel and the preceding pixel. Overshoot occurs when aninterpolated pixel has an amplitude that is more positive than theamplitude of either the preceding pixel or the target pixel. Undershootoccurs when an interpolated pixel has a amplitude less positive than theamplitude of either the preceding pixel or the target pixel. For thepurposes of the description, either overshoot or undershoot is referredto as appropriate, but it is to be understood that techniques thatminimize overshoot also minimize undershoot and vice versa.

The amplitude values received by acquisition logic 110 describe pixelsin the digital image. The amplitude values correspond to characteristics(e.g., color intensity values) of the pixels. The amplitude values areused by the scaling logic 120 to scale up the image. The scaling logic120 includes an overshoot logic 130, a slope selection logic 140, and arendering logic 150.

The overshoot logic 130 is configured to determine if interpolatedpixels will be subject to overshoot if standard cubic interpolation isused. Overshoot and undershoot typically occur in standard cubicinterpolation when a target pixel is a relative minimum or maximum. Todetermine if the target pixel is a relative minimum or maximum, theovershoot logic 130 identifies an adjacent preceding pixel to the targetpixel and an adjacent following pixel to the target pixel. The overshootlogic 130 compares the signs of slope values calculated between thetarget pixel and the adjacent pixels. A first slope, SL, is defined asthe slope between a preceding pixel and the target pixel. A secondslope, SR, is defined as the slope between the target pixel and thefollowing pixel. If the first slope and the second slope have differentsigns, the overshoot logic 130 determines that the target pixel is arelative maxima or minima, which would cause overshoot or undershoot.

The slope selection logic 140 selects a modified interpolation slopethat is used in the calculation of a modified cubic interpolation curve.Conventionally, the standard cubic scaling uses the standard cubicslope: (P(x+1)−P(x−1))/2 where P(x) is the amplitude of the pixel incolumn x, x−1 identifies a pixel to the left of the pixel in column x,and x+1 identifies a pixel to the right of the pixel in column x.Modified cubic interpolation determines the position of the target pixelrelative to its neighboring preceding pixel and following pixel, toselect a modified interpolation slope specifically suited to the targetpixel.

The modified interpolation slope will be set to one of:

-   -   0 if SL and SR have opposite signs;    -   min {(SL+SR)/2); (SF*SL); (SF*SR)} if SL and SR are positive,        where SF is a scaling factor; and    -   max {(SL(x)+SR(x))/2); (SF*SL(x)); (SF*SR(x))} if SL and SR are        negative, where SF is a scaling factor.

The modified interpolation slope is selected to limit the angle of riseof the modified cubic interpolation curve at the target pixel tominimize the occurrence of overshoot and undershoot. If the overshootlogic 130 determines the target pixel is a relative maxima or minima,the slope selection logic 140 sets the modified interpolation slope tozero. Accordingly, the modified interpolation slope acts as a line witha slope of zero that passes through the target pixel. This line istreated as a tangential line by the modified cubic interpolation curve.In one embodiment, the modified cubic interpolation curve approaches theslope zero line at the target pixel but does not cross it.Alternatively, the modified cubic interpolation curve uses the slopezero line as an indicator to approach the following pixel.

When the overshoot logic 130 determines that the target pixel is not arelative maxima or minima, the overshoot logic 130 selects one of threeslopes. The three slopes are: a scaled version of the first slope, ascaled version of the second slope, or a standard cubic slope whichcorresponds to the average of the first slope and the second slope. Inone embodiment, the slope selection logic 140 selects one of the threeslopes based on relative magnitudes of the first slope and the secondslope. In one embodiment, if the first slope is positive and the secondslope is positive, the slope selection logic 140 selects the smallest ofthe three slopes as the modified interpolation slope. By selecting thesmallest of the three slopes, the modified interpolation slope avoids arapid rise in the modified cubic interpolation curve that causes themodified cubic interpolation curve to overshoot the target pixel. In oneembodiment, if the first slope is negative and the second slope isnegative, the slope selection logic 140 uses the smallest of the threeslopes as the modified interpolation slope.

The scaling factor is applied to the first and second slopes to mitigatesharpness in the modified cubic interpolation curve that will degradethe enlarged image and provides continuity. The scale factor may be apredetermined scalar that is applied by the slope selection logic 140 tofirst and second slopes. In one embodiment, the scale factor is greaterthan or equal to one. The scale factor can be programmable by a user. Byscaling the first and second slope, the interpolated pixels on themodified cubic interpolation curve have a more gradual transitionbetween amplitude values.

In addition to determining an interpolation slope for the target pixel,the scaling logic 120 is configured to determine a interpolation slopefor the following pixel. This second interpolation slope is determinedin a subsequent iteration of modified cubic interpolation. In thesubsequent iteration, the following pixel is selected as the new targetpixel and the “old” target pixel (i.e., from the preceding iteration)becomes the new preceding pixel. A new following pixel is selected withrespect to the new target pixel. Note that the slope SL, one of theslopes from which the second interpolation slope is selected, hasalready been calculated in the prior iteration. When the secondinterpolation slope at the new target pixel has been selected, a curvecan be generated between the old target pixel and the new target pixelusing the determined slopes. This process continues sequentially untilall pixels in the digital image have been processed as target pixels.

The rendering logic 150 is configured to generate the modified cubicinterpolation curve at the target pixel using the selected interpolationslope, at the following pixel using the selected second interpolationslope, and so on. The modified cubic interpolation curve is populatedwith interpolated pixels. Thus, the interpolation pixels generated alongthe modified cubic interpolation curve have minimized overshoot andundershoot, causing the enlarged image to have smoother transitionsbetween pixels and less discernible discontinuities. The remainder ofthis description will focus on a single iteration of modified cubicinterpolation. Subsequent iterations may be performed to processadditional pixels in the digital image.

FIG. 2 illustrates a standard linear curve 240 in dotted line comparedto a modified cubic interpolation curve 250 in solid line. Pixels 210,220, and 230 correspond to existing pixels in a digital image. The pixel210 is a preceding pixel to the target pixel 220; the pixel 230 is afollowing pixel to the target pixel 220. The preceding pixel 210 has anamplitude of 50, the target pixel 220 has an amplitude of 150, and thefollowing pixel 230 has an amplitude of 100. The standard linear curve240 interpolates additional pixels between the preceding pixel 210, thetarget pixel 220, and the following pixel 230. The standard linear curve240 takes the shortest path from the preceding pixel 210 to the targetpixel 220 to the following pixel 230 with abrupt changes in slope thatcauses the derivative of the standard linear curve 240 to bediscontinuous. The discontinuous nature of the standard linear curve 240cause the digital image to appear disjointed.

The modified cubic interpolation curve 250 interpolates additionalpixels between the preceding pixel 210, the target pixel 220, and thefollowing pixel 230 has a continuous derivative to make the transitionbetween the pixels 210, 220, and 230 appear smooth. Overshoot andundershoot may occur but are minimized as compared to the overshoot andundershoot typical of a standard cubic curve.

The modified cubic interpolation curve 250 is calculated using theselected slope between the preceding pixel 210, the target pixel 220,and the following pixel 230. Slope calculations are defined as “riseover run” meaning the vertical distance between two existing pixelsdivided by the horizontal distance between the two existing pixels. Inone embodiment, the horizontal distance between existing pixels, isdefined as being equal to one. Accordingly, the vertical change betweenpixels corresponds to the slope between the pixels. In image scaling,existing pixels, such as preceding pixel 210, target pixel 220, andfollowing pixel 230 are equidistant so slopes can be compared based onthe difference in amplitude between pixels. The straightforward natureof the equations reduces the impact on the implementation andperformance. In one embodiment, a slope left (SL) is calculated betweena preceding adjacent pixel and a target pixel according to:

SL=P(x)−P(x−1)  (Eq. 1)

where:

-   -   for a pixel in column x, P(x) returns the amplitude of the pixel        in column x, and    -   for a pixel in column x−1, P(x−1) returns the amplitude of the        pixel in column x−1.

Columns x−1, x, and x+1 are defined as containing a single pixel value.For example, the target pixel 220 is located in column x. To the left ofthe target pixel 220 is preceding adjacent pixel 210 in column x−1.According to Equation 1, the SL between target pixel 220 and precedingpixel 210 is given by SL=P(x)−P(x−1)=150−50=100. Thus, SL is identifiedas a positive slope.

The slope right (SR) is calculated between the target pixel 220 and thefollowing adjacent pixel 230 according to:

SR=P(x+1)−P(x)  (Eq. 2)

where:

-   -   for a pixel in column x+1, P(x+1) returns the amplitude of the        pixel in column x+1, and    -   for a pixel in column x, P(x) returns the amplitude of the pixel        in column x.

For example, the target pixel 220 is located in column x. To the rightof the target pixel 220 is following pixel 230 in column x+1. Accordingto Equation 2, the SR between the following pixel 230 and the targetpixel 220 is given by: SR=P(x+1)−P(x)=100−150=−50. Thus, the SR isidentified as a negative slope. Since SL and SR have opposite signs, thetarget pixel 220 is a relative maxima or minima. Thus, the slope ofmodified cubic interpolation curve 250 is set to zero at the targetpixel 220.

FIG. 3A illustrates a standard cubic curve 360 compared to a modifiedcubic interpolation curve 370. Pixels 310, 320, 330, 340, and 350correspond to existing pixels in a digital image. Each pixel has anamplitude representing a color intensity value. The pixel 310 has anamplitude of 20, the pixel 320 has an amplitude of 21, the pixel 330 hasan amplitude of 220, the pixel 340 has an amplitude of 230, and thepixel 350 has an amplitude of 230.

The standard cubic curve 360 interpolates additional pixels between thepoints 310, 320, 330, 340, and 350. The amplitudes of the additionalpixels are established by the standard cubic curve 360. However,standard cubic interpolation results in undershoot and overshoot. Forexample, the slope of the standard cubic curve 360 decreases after thepixel 310 forming a dip or undershoot between the pixel 310 and thepixel 320. The standard cubic curve 360 is also subject to overshootbetween the pixel 330 and the pixel 340.

The modified cubic interpolation curve 370 interpolates pixels betweenthe existing pixels 310, 320, 330, 340, and 350. The amplitudes of theadditional pixels generated by the modified cubic interpolation curve370 exhibit minimized undershoot and overshoot. For example, themodified cubic interpolation curve 370 does not exhibit the undershootof standard cubic curve 360 between pixel 310 and pixel 320 or theovershoot of standard cubic curve 360 between pixel 330 and pixel 340.

To determine the slope of modified cubic interpolation curve 370, assumethat 330 is a target pixel making 320 the preceding pixel and 340 thefollowing pixel. Thus, SL and SR are both positive slopes. Because bothslopes are positive the modified interpolation slope is whichever is thesmallest of SL, SR, and standard bicubic slope.

FIG. 3B illustrates a close up view of the standard cubic curve 360compared to the interpolation curve 370 shown in FIG. 3A. The standardcubic curve 360 and the modified cubic interpolation curve 370 are shownin greater detail between the pixels 330 and 350. The standard cubiccurve 360 rises from pixel 330 and overshoots the amplitudes of pixel340. Pixel 330 has an amplitude of 220. Rather than rising to the pixel340 that has an amplitude of 230, the standard cubic curve 360 rises toa peak amplitude of 238 which is nearly twice the difference between theamplitude of the pixel 330 and the pixel 340. From that peak, thestandard cubic curve 360 falls to the pixel 340. The peak constitutessignificant overshoot. The overshoot occurs again between the pixels 340and 350 even though the pixels 340 and 350 have the same amplitude.

The modified cubic interpolation curve 370 does not suffer from thesignificant overshoot that the standard cubic curve 360 does. Betweenpixel 330 and 340 the amplitude of the modified cubic interpolationcurve 370 rises to an amplitude of 231. The rise in the modified cubicinterpolation curve 370 over pixel 340 ensures that the modified cubicinterpolation curve 370 is continuous, but does not suffer from theovershoot that the standard cubic curve 360 does. In one embodiment, ifovershoot, such as the overshoot between pixels 340 and 350 is desired,the standard bicubic slope can be selected to generate the modifiedcubic interpolation curve 370. The techniques used to generate theinterpolation curve 370 reduce overshoot and undershoot typical ofbicubic interpolation.

FIG. 4 illustrates another example of a standard cubic curve 410compared to a modified cubic interpolation curve 420. The standard cubiccurve 410 and the modified cubic interpolation curve 420 pass throughpixels 430, 440, 450 and 460. The standard cubic curve 410 hasundershoot beyond the scale given for the pixels and therefore issubject to clipping. For example, between pixels 440 and 450, thestandard cubic curve 410 is clipped.

To generate the modified cubic interpolation curve 420 between thepixels 430 and 440 an interpolation slope is determined for both thepixels 440 and 450. To determine the interpolation slope at pixels 440and 450, the four pixels 430, 440, 450, and 460 are used. Aninterpolation slope for the pixel 440, initially the target pixel, isdetermined using the pixel 430 as a proceeding pixel and the pixel 450as the following pixel. An interpolation slope for the pixel 450, nowthe target pixel, is determined using the pixel 440 as a proceedingpixel and the pixel 460 as the following pixel. Thus, the interpolationslopes of the pixels 440 and 450 are determined with respect to oneanother. Because the pixels 440 and 450 have the same amplitude, theinterpolation slope is selected to be zero to reduce undershoot andeliminate clipping.

FIG. 5 illustrates one embodiment of a method associated with modifiedbicubic interpolation. At 510, amplitude values describing pixelsexisting in an image to be scaled up are acquired. The amplitude valuesdescribe a characteristic (e.g., color intensity) of the pixels. Theamplitude values may be stored in a memory. Image scaling may then beperformed on the image by adding additional pixels that should havesmooth transitions to avoid severe changes in a scaled up image.

At 520, a target pixel is chosen from the set of pixels in the image.Once a target pixel is identified, a preceding pixel that is next to thetarget pixel is identified at 530. At 540, a subsequent pixel that isnext to the target pixel is identified. At 550, an interpolation slopefor the target pixel is selected. During this selection, at 552, a firstslope between the preceding pixel and the target pixel is determined. Ina first iteration of the method 500 the first slope is calculated. Insubsequent iterations, the first slope may be the second slope from aprior iteration that has been stored. At 554, a second slope between thetarget pixel and the subsequent pixel is calculated.

The first slope and the second slope are then compared at 556. Theslopes are compared to determine if the first slope and the second slopehave the same sign. If the slopes have different signs, theinterpolation slope is selected at 550 to be substantially zero. If theslopes have the same sign, the absolute value of a scaled version of thefirst slope, a scaled version of the second slope, and the standardbicubic slope are compared at 556. Based on the comparison at 556, thesmaller of the slopes is selected as the interpolation slope at 550.

At 560, a determination is made whether an interpolation slope has beendetermined for both the preceding pixel and the target pixel. If aninterpolation slope has not been selected for the preceding pixel andthe target pixel, a next target pixel is selected at 520. If aninterpolation slope has been selected for all pixels in the image, themethod moves to 570.

At 570, interpolated pixels are generated along an interpolation curvebetween the preceding pixel and the target pixel. The interpolatedpixels have the selected interpolation slopes at the preceding pixel andthe target pixel. The interpolated pixels are added between thepreceding pixel and the target pixel when the image is enlarged. Theinterpolated pixels vary in amplitude gradually from the preceding pixelto the target pixel so that the enlarged image will have smoothtransitions between the pixels while reducing overshoot and undershoot.At 580, a determination is made whether more pixels are available forinterpolation. If more pixels are available, the amplitude values ofthose pixels are acquired. If no more pixels are available the methodends. In this manner, a modified interpolation slope can be determinedat existing pixels in the image to generate a modified interpolationcurve.

The following includes definitions of selected terms employed herein.The definitions include various examples and/or forms of components thatfall within the scope of a term and that may be used for implementation.The examples are not intended to be limiting. Both singular and pluralforms of terms may be within the definitions.

References to “one embodiment”, “an embodiment”, “one example”, “anexample”, and so on, indicate that the embodiment(s) or example(s) sodescribed may include a particular feature, structure, characteristic,property, element, or limitation, but that not every embodiment orexample necessarily includes that particular feature, structure,characteristic, property, element or limitation. Furthermore, repeateduse of the phrase “in one embodiment” does not necessarily refer to thesame embodiment, though it may.

“Logic”, as used herein, includes but is not limited to hardware,firmware, instructions stored on a non-transitory medium or in executionon a machine, and/or combinations of each to perform a function(s) or anaction(s), and/or to cause a function or action from another logic,method, and/or system. Logic may include a software controlledmicroprocessor, a discrete logic (e.g., ASIC), an analog circuit, adigital circuit, a programmed logic device, a memory device containinginstructions, and so on. Logic may include one or more gates,combinations of gates, or other circuit components. Where multiplelogics are described, it may be possible to incorporate the multiplelogics into one physical logic. Similarly, where a single logic isdescribed, it may be possible to distribute that single logic betweenmultiple physical logics. One or more of the components and functionsdescribed herein may be implemented using one or more of the logicelements.

While for purposes of simplicity of explanation, illustratedmethodologies are shown and described as a series of blocks. Themethodologies are not limited by the order of the blocks as some blockscan occur in different orders and/or concurrently with other blocks fromthat shown and described. Moreover, less than all the illustrated blocksmay be used to implement an example methodology. Blocks may be combinedor separated into multiple components. Furthermore, additional and/oralternative methodologies can employ additional, not illustrated blocks.

To the extent that the term “includes” or “including” is employed in thedetailed description or the claims, it is intended to be inclusive in amanner similar to the term “comprising” as that term is interpreted whenemployed as a transitional word in a claim.

While example systems, methods, and so on have been illustrated bydescribing examples, and while the examples have been described inconsiderable detail, it is not the intention of the applicants torestrict or in any way limit the scope of the appended claims to suchdetail. It is, of course, not possible to describe every conceivablecombination of components or methodologies for purposes of describingthe systems, methods, and so on described herein. Therefore, thedisclosure is not limited to the specific details, the representativeapparatus, and illustrative examples shown and described. Thus, thisapplication is intended to embrace alterations, modifications, andvariations that fall within the scope of the appended claims.

1. A method, comprising: acquiring a set of amplitude values describingpixels in an image; and performing image scaling on the image by:identifying a target pixel from the set of pixels; identifying apreceding pixel to the target pixel; defining an amplitude range ofamplitudes between the amplitude of the preceding pixel and the targetpixel; determining when interpolation between the preceding pixel andtarget pixel will result in an interpolated pixel having an interpolatedamplitude outside of the amplitude range; based on the determination,selecting an interpolation slope; and providing the selectedinterpolation slope for use in generating a set of interpolated pixelsbetween the preceding pixel and the target pixel along a curve definingamplitudes of interpolated pixels, wherein the curve has the selectedinterpolation slope at the target pixel.
 2. The method of claim 1comprising selecting an interpolation slope of substantially zero whenthe interpolated amplitude is determined to be outside of the amplituderange.
 3. The method of claim 1, wherein determining when interpolationbetween the preceding pixel and target pixel will result in aninterpolated pixel outside the amplitude range comprises: determining afirst slope between the preceding pixel and the target pixel;identifying a following pixel to the target pixel; determining a secondslope between the target pixel and the following pixel; comparing afirst sign of the first slope to a second sign of the second slope; andwhen the first slope and the second slope have different signs,determining that the interpolated amplitude is outside of the amplituderange.
 4. The method of claim 1, wherein when the interpolated amplitudeis not outside of the amplitude range: determining a first slope betweenthe preceding pixel and the target pixel; determining a second slopebetween the target pixel and a following pixel; and selecting aninterpolation slope from the first slope, the second slope, and anaverage of the first slope and the second slope.
 5. The method of claim4, wherein selecting the interpolation slope comprises selecting theinterpolation slope based, at least in part, on relative magnitudes ofthe first slope, the second slope, and the average of the first slopeand the second slope.
 6. The method of claim 4, further comprisingapplying a scaling factor to the first and second slopes prior toselecting the interpolation slope.
 7. The method of claim 1, wherein theinterpolation is cubic interpolation or bicubic interpolation.
 8. Anapparatus, comprising: an acquisition logic configured to acquire a setof amplitude values describing pixels in an image; and a scaling logicconfigured to perform image scaling on the image, comprising: anovershoot logic configured to identify a target pixel and a precedingpixel and determine if interpolation between the preceding pixel andtarget pixel will result in an interpolated pixel having an interpolatedamplitude outside of an amplitude range between the preceding pixel andthe target pixel; a slope selection logic configured to select aninterpolation slope for a curve that defines amplitudes of a set ofinterpolated pixels; and a rendering logic configured to render the setof interpolated pixels between the preceding pixel and the target pixelusing the interpolation slope.
 9. The apparatus of claim 8, wherein whenthe interpolated amplitude is outside of the amplitude range, theinterpolation slope is selected to be substantially zero.
 10. Theapparatus of claim 8, wherein the overshoot logic is configured to:determine a first slope between the preceding pixel and the targetpixel; determine a second slope between the target pixel and thefollowing pixel; compare a first sign of the first slope to a secondsign of the second slope; and when the first slope and the second slopehave different signs, determine that the interpolated amplitude isoutside the amplitude range.
 11. The apparatus of claim 10, wherein theslope selection logic is configured to select an interpolation slopefrom the first slope, the second slope, and an average of the firstslope and the second slope when the interpolated amplitude is notoutside of the amplitude range.
 12. The apparatus of claim 10, whereinthe slope selection logic is configured to select the interpolationslope based, at least in part, on relative magnitudes of the firstslope, the second slope, and the average of the first slope and thesecond slope.
 13. The apparatus of claim 11, wherein the slope selectionlogic is configured to apply a scaling factor to the first and secondslopes prior to selecting the interpolation slope.
 14. The apparatus ofclaim 8, wherein the rendering logic is configured to perform cubicinterpolation or bicubic interpolation.
 15. A method, comprising:identifying a target pixel in an image to be scaled up; identifying apreceding pixel to the target pixel; identifying a following pixel tothe target pixel; determining a first slope between the preceding pixeland the target pixel; determining a second slope between the targetpixel and the following pixel; selecting an interpolation slope, basedat least in part on the first slope and the second slope; defining aninterpolation curve having the selected interpolation slope at thetarget pixel; and generating a set of interpolated pixels between thepreceding pixel and the following pixel along the interpolation curve.16. The method of claim 15, comprising selecting an interpolation slopeof substantially zero when the first slope and second slope havedifferent signs.
 17. The method of claim 15, comprising selecting aninterpolation slope corresponding to one of the first slope, the secondslope, and an average of the first slope and the second slope when thefirst slope and second slope have a same sign.
 18. The method of claim17, further comprising applying a scaling factor to the first and secondslopes prior to selecting the interpolation slope.
 19. The method ofclaim 17, wherein selecting the interpolation slope is based, at leastin part, on relative magnitudes of the first slope, the second slope,and the average of the first slope and the second slope.
 20. The methodof claim 15, further comprising determining if additional pixels areavailable for interpolation, and in the event the additional pixels areavailable, acquiring amplitude values for the additional pixels toidentify an additional pixel as an additional target pixel.